// 引入WebSocket服务器模块
const { broadcastMessage } = require('../websocket/websocket-server.js');

function p2j(url, e) {
    e = JSON.parse(e)

    if (url.includes('/live/msg')) {
        if (e.data.appMsgList) {
            e.data.appMsgList.forEach(m => {
                let msg = {}
                let base = m.payload;
                let data = Buffer.from(base, 'base64').toString('utf-8');
                data = JSON.parse(data);
                console.log(data)//礼物数据
                let giftmsg = data.content || '';//可**送了主播3个爱心
                //通过正则提取出礼物和礼物数量，规则：主播x个xx
                let reg = /主播(\d+)个(.+)/;
                let result = giftmsg.match(reg);
                if (result) {
                    let giftNum = result[1];
                    let giftName = result[2];
                    msg.giftId = giftName;
                    msg.giftName = giftName;
                    msg.giftCount = giftNum;
                }
                msg.uid = m.fromUserContact.contact.username;//好像会变
                msg.name = m.fromUserContact.contact.nickname
                msg.avatar = m.fromUserContact.contact.headUrl
                msg.msgId = Date.now();//时间戳
                msg.msgType = "礼物";
                if (msg.giftId) {
                    sendMessage(JSON.stringify(msg));
                }
                //console.log(msg.msgType, msg.name, msg.giftName, msg.giftCount)
            })
        }
        //对e进行数据提取，提取出弹幕等信息
        if (e.data.msgList) {
            e.data.msgList.forEach(m => {
                let msg = {}
                if (m.type == 10005) {
                    msg.uid = m.username;//好像会变
                    msg.name = m.nickname;
                    msg.sex = m.finderLiveContact.contact.extInfo.sex;
                    msg.avatar = m.headUrl;
                    msg.msgId = Date.now();//时间戳
                    msg.msgType = "进房";
                    console.log(msg.msgType, msg.name)
                }
                if (m.type == 1) {
                    msg.uid = m.username;//好像会变
                    msg.name = m.nickname;
                    msg.sex = m.finderLiveContact.contact.extInfo.sex;
                    msg.avatar = m.headUrl;
                    msg.msgId = Date.now();//时间戳
                    msg.msgType = "弹幕";
                    msg.content = m.content;
                    console.log(msg.msgType, msg.name, msg.content)
                }

                sendMessage(JSON.stringify(msg));

            });
        }
    }
}

function sendMessage(message) {
    // 将弹幕消息广播给所有WebSocket客户端
    try {
        const clientCount = broadcastMessage(message);
        //console.log(`弹幕消息已广播给 ${clientCount} 个WebSocket客户端:`, message);
    } catch (error) {
        //console.error('广播弹幕消息失败:', error);
    }
}

module.exports = {
    p2j
}
